1
手動記憶體管理的陷阱
AI013Lesson 5
00:00

透過 newdelete 建立了一個脆弱的 「責任協議」。程式設計師必須精確預測所有執行路徑——包括提早回傳與例外狀況——以確保資源被釋放。這種方法容易導致系統性失敗。

系統性失敗

  • 記憶體洩漏陷阱: 在複雜邏輯(if-else、switch)中,若未能為每一個 new 配對 delete 將隨著時間推移逐步降低系統效能。
  • 指標無效化: 例如 懸空指標 (在釋放後存取記憶體)或 重複釋放 會引發未定義行為與安全漏洞。
  • 例外安全: 若在配置與釋放之間發生例外,則 delete 將完全被跳過。
new char[]X提早回傳(洩漏)X例外(洩漏)防爆器(• std::unique_ptr• std::shared_ptr• std::weak_ptr

演進

C++11/14 重新設計了 <memory> 標頭,從「裸指標」轉向自動化的擁有權模型,於編譯階段即強制安全機制。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>